package com.douyin.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.douyin.entity.video.Video;
import com.douyin.entity.video.VideoShare;
import com.douyin.vo.BasePage;
import com.douyin.vo.HotVideo;

import java.util.Collection;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;

public interface VideoService extends IService<Video> {
    void pushVideo(Video video,Long userId);

    Collection<Video> pushVideos(Long userId);

    boolean favorites(Long fId, Long vId, Long userId);

    List<Video> listVideoByFavoritesId(Long favoritesId,Long userId);

    boolean starVideo(Long videoId, Long userId);

    boolean shareVideo(VideoShare videoShare);

    Collection<Video> getVideoByTypeId(Long typeId);

    void historyVideo(Long videoId, Long userId);

    LinkedHashMap<String,List<Video>> getHistory(BasePage basePage, Long userId);

    IPage<Video> listByUserIdVideo(BasePage basePage, Long userId);

    void deleteVideo(Long id,Long userId);

    String getAuditQueueState();

    IPage<Video> searchVideo(String search, BasePage basePage, Long userId);


    IPage<Video> getVideoByUserId(Long userId, BasePage basePage);

    List<Video> selectNDaysAgeVideo(long id, int days, int limit);

    List<HotVideo> getHotRank();

    Collection<Video> getHotVideo();

    Collection<Video> listSimilarVideo(Video video);

    List<Long> listVideoIdByUserId(Long followId);

    Collection<Video> followFeed(Long aLong, Long lastTime);

    void updateFollowFeed(Long userId);

    void auditProcess(Video video);

    void violations(Long id);
}
